package com.ebo.httpcall4j.core.model;

import com.ebo.httpcall4j.core.model.enums.ContentType;
import com.ebo.httpcall4j.core.model.enums.HttpMethod;
import com.ebo.httpcall4j.core.retry.RetryStrategy;
import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * http请求实体
 */
@Data
public class HttpCallRequest {

    /**
     * 调用方IP
     */
    private String ip;

    /**
     * 请求URL
     */
    private String url;
    /**
     * 请求方法
     */
    private HttpMethod method;
    /**
     * 请求头
     */
    private Map<String, String> headers = new HashMap<>();
    /**
     * 请求体，可以是任何Java对象（如实体类、Map）或字符串
     */
    private Object body;
    /**
     * 请求的Content-Type，默认为application/json
     */
    private ContentType contentType = ContentType.APPLICATION_JSON;

    /**
     * 业务系统名称
     */
    private String systemName;

    /**
     * 功能名称
     */
    private String functionName;

    /**
     * 是否记录日志
     */
    private boolean logEnabled = true;

    /**
     * 扩展字段
     */
    private Object extensions;

    /**
     * 是否可重试
     */
    private boolean retryable = false;

    /**
     * 自定义重试策略
     */
    private RetryStrategy retryStrategy;
}